首先说一下访问web依次会用到什么协议
##
DNS->TCP->HTTP->IP->ARP
DNS有2中查询方式:递归、迭代,可以分别表示为:
域名解析原理:
1>一个域中的每个主机名与其IP地址的映射关系由这个域的DNS服务器负责管理,例如,”www.it.org”、“ftp.it.org”、“blog.it.org”等主机名都由管理域“it.org”的DNS服务器进行管理,而不能由管理域“org”的DNS服务器进行管理。
2>每个管理域都必须在其直接父域的DNS服务器上注册该子域的名称和该子域的DNS服务器的IP地址,例如,必须在管理域“org”的DNS服务器注册子域“it.org”和其DNS服务器的IP地址后,域名“it.org”才能真正被外界所认可。
3>为了方便对顶级域名的统一管理,在顶级域名之上其实还有一个根域名,根域名用点(.)表示,例如,“www.it.org”也可以写为“www.it.org.”,“www.it.org.”中的最后的那个点(.)就表示根域名。 Internet中的根域名由InterNIC(国际互联网络信息中心)集中管理,顶级域名和其下的域名则由拥有该域名的组织、公司和个人自己管理。
三次握手与四次断开
所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。
三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。在 socket 编程中,客户端执行 connect()
时。将触发三次握手。
TCP 的连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),也叫做改进的三次握手。客户端或服务器均可主动发起挥手动作,在 socket 编程中,任何一方执行 close()
操作即可产生挥手操作。
浏览器向web服务器发送一个http请求
POST /search HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint,
application/msword, application/x-silverlight, application/x-shockwave-flash, /
Referer: <a href=”http://www.google.cn/">http://www.google.cn/</a>
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld)
Host: <a href=”http://www.google.cn">www.google.cn</a>
Connection: Keep-Alive
Cookie: PREF=ID=80a06da87be9ae3c:U=f7167333e2c3b714:NW=1:TM=1261551909:LM=1261551917:S=ybYcq2wpfefs4V9g;
NID=31=ojj8d-IygaEtSxLgaJmqSjVhCspkviJrB6omjamNrSm8lZhKy_yMfO2M4QMRKcH1g0iQv9u-2hfBW7bUFwVh7pGaRUb0RnHcJU37y-
FxlRugatx63JLv7CWMD6UB_O_r
hl=zh-CN&source=hp&q=domety
`
### 请求头部:由关键字/值对组成,每行一对,关键字和值用英文冒号”:“分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
<div>
<pre>`User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。星号 “ * ” 用于按范围将类型分组,用 “ */* ” 指示可接受全部类型,用“ type/* ”指示可接受 type 类型的所有子类型。
Host:要请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
Accept-Language:客户端可接受的自然语言。
Accept-Encoding:客户端可接受的编码压缩格式。
Accept-Charset:可接受的应答的字符集。
connection:连接方式(close 或 keepalive)。
Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie。
IP
- 用于网络层,提供点到点的服务
- 通常划分为A、B、C、D 4类地址快
- 广播和多播仅用于UDP(TCP是面向连接的)。
- 网络好、子网号、主机号 16+8+8
APR
- 主机在发送帧前将目标IP地址转换成目标MAC地址的过程
5. 服务器的永久重定向访问
- HTTP是无连接无状态的
- 服务器给浏览器响应一个301永久重定向响应,这样浏览器就会访问“http://www.facebook.com/” 而非“http://facebook.com/”
- 这样就会把访问带www的和不带www的地址归到同一个网站排名下。还有就是用不同的地址会造成缓存友好性变差,当一个页面有好几个名字时,它可能会在缓存里出现好几次。
- 常用状态码
6. 浏览器跟踪重定向地址
- 现在浏览器知道了 “HTTP://www.facebook.com/”才是要访问的正确地址,所以它会发送另一个http请求。
7. 服务器处理请求
服务器接收到请求后,确定执行某一请求处理来处理它,执行后台代码,并访问数据库。连通前台生成一个HTML来进行相应请求
8. 服务器向浏览器发回一个HTML相应
- 返回时,执行发送时的步骤进行查找
9.释放TCP 连接(4步)
10. 浏览器解析HTML内容
- 解析文本并显示
11. 浏览器获取嵌入在HTML中的对象
- 会注意到需要获取其他地址内容的标签
- 浏览器会在DNS中查找这些域名,发送请求,重定向等等…
12. 浏览器渲染HTML页面
参考: http://blog.csdn.net/lzghxjt/article/details/51458540
https://hit-alibaba.github.io/interview/basic/network/HTTP.html